window.onload=function(){
function $(param){
    if(arguments[1] == true){
        return document.querySelectorAll(param);
    }else{
        return document.querySelector(param);
    }
}

var $box = $(".box");
var $box1 = $(".box-1 ul li",true);
var $box2 = $(".box-2 ul");
var $box3 = $(".box-3");
var $length = $box1.length;

var str = "";
for(var i =0;i<$length;i++){
    if(i==0){
        str +="<li class='on'>"+(i+1)+"</li>";
    }else{
        str += "<li>"+(i+1)+"</li>";
    }
}

$box2.innerHTML = str;

var current = 0;

var timer;
timer = setInterval(go,2000);
function go(){
    for(var j =0;j<$length;j++){
        $box1[j].style.display = "none";
        $box2.children[j].className = "";
    }
    if($length == current){
        current = 0;
    }
    $box1[current].style.display = "block";
    $box2.children[current].className = "on";
    current++;
}

for(var k=0;k<$length;k++){
    $box1[k].onmouseover = function(){
        clearInterval(timer);
    }
    $box1[k].onmouseout = function(){
        timer = setInterval(go,2000);
    }
}
for(var p=0;p<$box3.children.length;p++){
    $box3.children[p].onmouseover = function(){
        clearInterval(timer);
    };
    $box3.children[p].onmouseout = function(){
        timer = setInterval(go,2000);
    }
}

for(var u =0;u<$length;u++){
    $box2.children[u].index  = u;
    $box2.children[u].onmouseover = function(){
        clearInterval(timer);
        for(var j=0;j<$length;j++){
            $box1[j].style.display = "none";
            $box2.children[j].className = "";
        }
        this.className = "on";
        $box1[this.index].style.display = "block";
        current = this.index +1;
    }
    $box2.children[u].onmouseout = function(){
        timer = setInterval(go,2000);
    }
}

$box3.children[0].onclick = function(){
    back();
}
$box3.children[1].onclick = function(){
    go();
}
function back(){
    for(var j =0;j<$length;j++){
        $box1[j].style.display = "none";
        $box2.children[j].className = "";
    }
    if(current == 0){
        current = $length;
    }
    $box1[current-1].style.display = "block";
    $box2.children[current-1].className = "on";
    current--;
}

//1. 获取元素
        var sliderbar = document.querySelector('.slider-bar');
        var banner = document.querySelector('.main-content1');
        // banner.offestTop 就是被卷去头部的大小 一定要写到滚动的外面
        var bannerTop = banner.offsetTop
            // 当我们侧边栏固定定位之后应该变化的数值
        var sliderbarTop = sliderbar.offsetTop - bannerTop;
        // 获取main 主体元素
        var main = document.querySelector('.main-content4');
        var goBack = document.querySelector('.goBack');
        var mainTop = main.offsetTop;
        // 2. 页面滚动事件 scroll
        document.addEventListener('scroll', function() {
                // console.log(11);
                // window.pageYOffset 页面被卷去的头部
                // console.log(window.pageYOffset);
                // 3 .当我们页面被卷去的头部大于等于了 172 此时 侧边栏就要改为固定定位
                if (window.pageYOffset >= bannerTop) {
                    sliderbar.style.position = 'fixed';
                    sliderbar.style.top = sliderbarTop + 'px';
                } else {
                    sliderbar.style.position = 'absolute';
                    sliderbar.style.top = '300px';
                }
                // 4. 当我们页面滚动到main盒子，就显示 goback模块
                /*if (window.pageYOffset >= mainTop) {
                    goBack.style.display = 'block';
                } else {
                    goBack.style.display = 'none';
                }*/

            })
            // 3. 当我们点击了返回顶部模块，就让窗口滚动的页面的最上方
        goBack.addEventListener('click', function() {
            // 里面的x和y 不跟单位的 直接写数字即可
            // window.scroll(0, 0);
            // 因为是窗口滚动 所以对象是window
            animate(window, 0);
        });
        // 动画函数
        function animate(obj, target, callback) {
            // console.log(callback);  callback = function() {}  调用的时候 callback()

            // 先清除以前的定时器，只保留当前的一个定时器执行
            clearInterval(obj.timer);
            obj.timer = setInterval(function() {
                // 步长值写到定时器的里面
                // 把我们步长值改为整数 不要出现小数的问题
                // var step = Math.ceil((target - obj.offsetLeft) / 10);
                var step = (target - window.pageYOffset) / 10;
                step = step > 0 ? Math.ceil(step) : Math.floor(step);
                if (window.pageYOffset == target) {
                    // 停止动画 本质是停止定时器
                    clearInterval(obj.timer);
                    // 回调函数写到定时器结束里面
                    // if (callback) {
                    //     // 调用函数
                    //     callback();
                    // }
                    callback && callback();
                }
                // 把每次加1 这个步长值改为一个慢慢变小的值  步长公式：(目标值 - 现在的位置) / 10
                // obj.style.left = window.pageYOffset + step + 'px';
                window.scroll(0, window.pageYOffset + step);
            }, 15);
        }


}





